package hotciv.framework;

/** Represents a city in the game.

Responsibilities:
1) Knows its owner.
2) Knows its population size.

   From the book "Flexible, Reliable Software Explained"
   To be published 2010 by CRC Press
   Author: 
     Henrik B Christensen 
     Department of Computer Science
     University of Aarhus
   
   This source code is provided AS-IS. It can be
   freely distributed as long as this acknowledgement
   is maintained.
*/
public interface City 
{
	/** return the owner of this city.
	* @return the player that controls this city.
	*/
	public Player getOwner();
  
	/** return the size of the population.
	* @return population size.
	*/
	public int getSize();

	/** return the type of unit this city is currently producing.
	* @return a string type defining the unit under production,
	* see GameConstants for valid values.
	*/
	public String getProduction();

	/** return the work force's focus in this city.
	* @return a string type defining the focus, see GameConstants
	* for valid return values.
	*/
	public String getWorkforceFocus();

	public void decrementTreasury(int i);
	
	public int getPopulation();
	
	public int getTreasury();
	
	public void incrementTreasury(int i);
	
	public void setOwner(Player p);
	
	public void setProduction(String s);
	
	public void setWorkforceFocus(String s);
}
